package main

func main() {
	// GO语言中通道、类型及特点
	/*
		无缓冲通道（Unbuffered Channel）
			无缓冲通道 在发送方发送数据时，接收方必须准备好接收数据，否则发送会被阻塞，直到接收方接收数据。
			无缓冲通道是同步的，发送方和接收方在同一时间进行操作。
		使用场景：适用于需要严格同步的场景，保证两个 goroutine 的同步通信。

		有缓冲通道（Buffered Channel）
			有缓冲通道 在创建时指定了容量，发送方在发送数据时，不会立即阻塞，直到缓冲区满为止。
			如果缓冲区有空间，发送操作会立刻返回；如果缓冲区满，发送操作会被阻塞，直到缓冲区有空间。
		使用场景：适用于有数据积压的场景，允许多个数据项在缓冲区内传递，不需要每个数据的发送都同步。

		双向通道与单向通道
			双向通道：默认情况下，通道是双向的，可以进行发送和接收操作。
			单向通道：你可以通过类型声明指定通道只能用于发送或接收。
	*/

	/*
		通道的特点
		通道是线程安全的
			Go 的通道是内建的同步原语，能够保证在多个 goroutine 中安全地共享数据。通道本身通过内置的机制避免了竞争条件，因此无需使用互斥锁。

		通道是同步的
			无缓冲通道是完全同步的，即发送方和接收方必须在同一时刻进行通信，发送方必须等待接收方准备好接收数据。缓冲通道则允许在通道未满时继续发送数据，直到缓冲区满时才会阻塞。

		通过通道关闭机制进行通信
			的通道支持关闭操作。关闭后的通道不能再发送数据，但可以继续接收数据。接收端可以通过 ok 标记来检测通道是否已关闭：
	*/
}
